<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
        
    </style>
</head>
<body>
    
</body>
<script>


    // var arr = [4,5,6,"4","6",4,5,6];
    // console.log( arr.indexOf(5) );
    // console.log( arr.indexOf(5, 2) );
    // console.log( arr.indexOf(5, 7) );
    // console.log( arr.indexOf("5") );

    // ======

    // 当一个函数A作为参数传入另一个函数B中，作为参数的这个函数A，叫函数B的回调函数

    
    // forEach，map，filter，some，every
    // 遍历数组，根据数组的长度，多次执行传入的回调函数
    // 回调函数接收了三个形参
        // 形参1：回调函数每次执行时遍历到的数据
        // 形参2：回调函数本次执行时获取到的数据的索引
        // 形参3：正在遍历的数组本身，原数组
    

    // forEach返回值：没有返回值
    // var arr = [3, 5, 8, 2, 7];
    // var result = arr.forEach( function(a, b, c){
    //     console.log(a, b, c, c===arr);
    //     return "hello"
    // } )
    // console.log(result);

    // map返回值：是一个新数组，数组内保存了回调函数每次的返回值
    // var arr = [3, 5, 8, 2, 7];
    // var result = arr.map( function(a, b, c){
    //     console.log(a, b, c, c===arr);
    //     return "hello " + a;
    // } )
    // console.log(result);
    // console.log(result === arr);

    // filter返回值：是一个新数组，数组内保存了：回调函数返回 true值 时遍历到的数组的数据
    // var arr = [3, 5, 8, 2, 7];
    // var result = arr.filter( function(a, b, c){
    //     console.log(a, b, c, c===arr);
    //     return a % 2;
    // } )
    // console.log(result);
    // console.log(result === arr);

    // some返回值：布尔值，当回调函数的返回值出现第一次true时，结束遍历，并返回true，回调函数的返回值全部为false时，遍历所有，并返回false
    // var arr = [3, 5, 8, 2, 7];
    // var result = arr.some( function(a, b, c){
    //     console.log(a, b, c, c===arr);
    //     return a === 8
    // } )
    // console.log(result);

    // every返回值：布尔值，当回调函数的返回值出现第一次false时，结束遍历，并返回false，回调函数的返回值全部为true时，遍历所有，并返回true
    var arr = [3, 5, 8, 2, 7];
    var result = arr.every( function(a, b, c){
        console.log(a, b, c, c===arr);
        return a !== 8;
    } )
    console.log(result);

    
</script>
</html>